home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume91 / libraris / sregexp1 / part01 / sregexp.h < prev    next >
C/C++ Source or Header  |  1992-04-20  |  2KB  |  66 lines

  1.  
  2. /* This is used for COMPILING sregexp.library, it should not be included
  3.   if you just USE the library.    See sregexpbase.h */
  4.  
  5. #include <stddef.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <ctype.h>
  9. #include <clib/exec_protos.h>
  10. #include <clib/dos_protos.h>
  11. #include <libraries/dosextens.h>
  12. #include "sregexpbase.h"
  13.  
  14. #define TRUE    1
  15. #define FALSE    0
  16.  
  17.  
  18. #define MEM_ERROR    ERROR_NO_FREE_STORE    /* report no mem */
  19. #define ILLEGAL_ERR    ERROR_INVALID_COMPONENT_NAME   /* bad sregexp */
  20.  
  21.  
  22. /* some handy fingersaving macros. */
  23. #define realen(a)       (((a)->sre_Flag&(SRF_REPEAT|SRF_NOT))?0:(a)->sre_MinLen)
  24. #define isfixed(s)      (((s)->sre_Flag&(SRF_REPEAT|SRF_NOT|SRF_FIXLEN))==SRF_FIXLEN)
  25. #define matchset(s,c)   ((s)->sre_Data.setchar[(c)/8] & 1 << (c)%8)
  26.  
  27. #ifdef    __MEMCHECK__
  28.  
  29. #define getmem(a)       checkmem(a,__BASE_FILE__,__LINE__)
  30. #define freemem(p,s)    freecheck(p,s,__BASE_FILE__,__LINE__)
  31.  
  32. extern void *checkmem(int, char *, int);
  33. extern void freecheck(void *, int, char *, int);
  34.  
  35. #else
  36.  
  37. #define getmem(a)       AllocMem(a,0)
  38. #define freemem(p,s)    FreeMem(p,s)
  39.  
  40. #endif
  41.  
  42.  
  43. static struct SregExp *     parsesub(char **, char);
  44. static struct SregExp *     makesum(struct SregList *, int);
  45. static struct SregExp *     makeor(struct SregList *, int);
  46. static struct SregExp *     parseone(char **, char);
  47. static char            onechar(char **, char);
  48. static struct SregExp *     makenull(void);
  49. static char *            makeset(char **);
  50. static int            matchsum(struct SregExp *[], int, char *, int, int);
  51. static void            report(int);
  52. static struct SpathNode *   makespathnode(BPTR, char *, struct SregList *);
  53. static void            freespathnode(struct SpathNode *);
  54. static struct SregList *    parsepath(char *);
  55.  
  56. extern struct SregExp *     parsesregexp(char *);
  57. extern void            freesregexp(struct SregExp *);
  58. extern int            matchsregexp(char *, struct SregExp *, int);
  59. extern int            matchnsregexp(char *, struct SregExp *, int, int);
  60. extern int            iswild(char *);
  61. extern struct SpathInfo *   anchorpath(char *, char *);
  62. extern int            nextfile(struct SpathInfo *, char *, int, int);
  63. extern int            buildpath(struct SpathInfo *, char *, int);
  64. extern void            freespathinfo(struct SpathInfo *);
  65.  
  66.